#include<stdio.h>  
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <error.h>
#include <fcntl.h>
#define N 20

int main() {
    // 用于存储从命名管道中读取的数据
    char buf[N];
    // 以只读模式打开命名管道文件 /home/lyq/mypipe，如果文件不存在则创建它
    int fd = open("/home/lyq/mypipe", O_RDONLY | O_CREAT);

    // 检查命名管道是否成功打开
    if (fd != -1) {
        // 若成功打开，输出提示信息
        printf("FIFO file is opened\n");
    }
    else {
        // 若打开失败，输出错误信息并终止程序
        perror("open failed"); 
        exit(0);
    }

    // 尝试从命名管道中读取数据，最多读取 N 个字节
    if (read(fd, buf, N) != -1) {
        // 若读取成功，输出接收到的数据
        printf("I received data %s\n", buf);
    }
    else {
        // 若读取失败，输出错误信息
        perror("read error:");
    }

    // 程序正常退出
    exit(EXIT_SUCCESS);  
}